package com.ruoyi.cs.service;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.ruoyi.common.core.domain.Response;
import com.ruoyi.cs.domain.TRecharge;
import com.ruoyi.cs.domain.vo.PersonalBillVo;
import com.ruoyi.cs.domain.vo.SomisspayVo;
import com.ruoyi.cs.domain.vo.TRechargeCountVo;
import com.ruoyi.cs.domain.vo.TRechargeVo;
import com.ruoyi.common.core.domain.AjaxResult;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 充值记录Service接口
 * 
 * @author ruoyi
 * @date 2021-03-25
 */
public interface ITRechargeService 
{
    /**
     * 查询充值记录
     * 
     * @param czId 充值记录ID
     * @return 充值记录
     */
    public TRecharge selectTRechargeById(String czId);

    /**
     * 查询充值记录列表
     * 
     * @param tRecharge 充值记录
     * @return 充值记录集合
     */
    public List<TRecharge> selectTRechargeList(TRecharge tRecharge);

    /**
     * 新增充值记录
     * 
     * @param tRecharge 充值记录
     * @return 结果
     */
    public int insertTRecharge(TRecharge tRecharge);

    /**
     * 修改充值记录
     * 
     * @param tRecharge 充值记录
     * @return 结果
     */
    public int updateTRecharge(TRecharge tRecharge);

    /**
     * 批量删除充值记录
     * 
     * @param czIds 需要删除的充值记录ID
     * @return 结果
     */
    public int deleteTRechargeByIds(String[] czIds);

    /**
     * 删除充值记录信息
     * 
     * @param czId 充值记录ID
     * @return 结果
     */
    public int deleteTRechargeById(String czId);


    /**
     * 聚合充值接口
     * @param userId,czMoney
     * @return
     * @throws Exception
     */
    public Response<Map> rechargeSomisspay(String userId,BigDecimal czMoney,String czEquipment)  throws Exception ;


    /**
     * 聚合异步通知接口
     * @param vo
     * @return
     */
    public Object payjsNotifySomisspay(SomisspayVo vo);

    /**
     * 统计充值总金额、总笔数
     * @return
     */
    public Map<String, BigDecimal> countTRechargeTotal(TRechargeVo tRechargeVo);

    /**
     * 充值记录列表
     * @param tRechargeVo
     * @return
     */
    public List<TRechargeVo> trechargeListBack(TRechargeVo tRechargeVo);

    /**
     * 后台充值列表
     * @param tRechargeVo
     * @return
     */
    public List<TRechargeVo> listBackCount(TRechargeVo tRechargeVo);


    /**
     * 个人账单
     * @param
     * @return
     */
    public List<PersonalBillVo> getPersonalBill(PersonalBillVo personalBillVo);

}
